🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / core / database / src / commonTest / kotlin / org / meshtastic / core / database / dao / CommonPacketDaoTest.kt
Displaying Raw • Download
core/database/src/commonTest/kotlin/org/meshtastic/core/database/dao/CommonPacketDaoTest.kt 41414f832f938b655c97bc07509bc140ea16e2a3 (41414f83) Text, 19.63 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.database.dao
Tff7b72import T7ee787kotlinx.coroutines.flow.first
Tff7b72import T7ee787kotlinx.coroutines.test.runTest
Tff7b72import T7ee787okio.ByteString.Companion.toByteString
Tff7b72import T7ee787org.meshtastic.core.common.util.nowMillis
Tff7b72import T7ee787org.meshtastic.core.database.MeshtasticDatabase
Tff7b72import T7ee787org.meshtastic.core.database.entity.MyNodeEntity
Tff7b72import T7ee787org.meshtastic.core.database.entity.Packet
Tff7b72import T7ee787org.meshtastic.core.database.entity.ReactionEntity
Tff7b72import T7ee787org.meshtastic.core.database.getInMemoryDatabaseBuilder
Tff7b72import T7ee787org.meshtastic.core.model.DataPacket
Tff7b72import T7ee787org.meshtastic.core.model.MessageStatus
Tff7b72import T7ee787org.meshtastic.core.model.NodeAddress
Tff7b72import T7ee787org.meshtastic.proto.Data
Tff7b72import T7ee787org.meshtastic.proto.MeshPacket
Tff7b72import T7ee787org.meshtastic.proto.PortNum
Tff7b72import T7ee787org.meshtastic.proto.Routing
Tff7b72import T7ee787kotlin.test.AfterTest
Tff7b72import T7ee787kotlin.test.Test
Tff7b72import T7ee787kotlin.test.assertEquals
Tff7b72import T7ee787kotlin.test.assertFalse
Tff7b72import T7ee787kotlin.test.assertNotNull
Tff7b72import T7ee787kotlin.test.assertNull
Tff7b72import T7ee787kotlin.test.assertTrue
Tff7b72abstract Tff7b72class T56d364CommonPacketDaoTest Tb4b4b4{
Tff7b72private Tff7b72lateinit Tff7b72var Te6edf3databaseTb4b4b4: Te6edf3MeshtasticDatabase
Tff7b72private Tff7b72lateinit Tff7b72var Te6edf3nodeInfoDaoTb4b4b4: Te6edf3NodeInfoDao
Tff7b72private Tff7b72lateinit Tff7b72var Te6edf3packetDaoTb4b4b4: Te6edf3PacketDao
Tff7b72private Tff7b72val Te6edf3myNodeInfoTb4b4b4: Te6edf3MyNodeEntity Tff7b72=
Te6edf3MyNodeEntityTb4b4b4(
Te6edf3myNodeNum Tff7b72= T79c0ff4T79c0ff2T79c0ff4T79c0ff2T79c0ff4T79c0ff2T79c0ff4T79c0ff2Tb4b4b4,
Te6edf3model Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3firmwareVersion Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3couldUpdate Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3shouldUpdate Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3currentPacketId Tff7b72= T79c0ff1LTb4b4b4,
Te6edf3messageTimeoutMsec Tff7b72= T79c0ff5 Tff7b72* T79c0ff6T79c0ff0 Tff7b72* T79c0ff1T79c0ff0T79c0ff0T79c0ff0Tb4b4b4,
Te6edf3minAppVersion Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3maxChannels Tff7b72= T79c0ff8Tb4b4b4,
Te6edf3hasWifi Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)
Tff7b72private Tff7b72val Te6edf3myNodeNumTb4b4b4: Tffa657Int
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3myNodeInfoTb4b4b4.Te6edf3myNodeNum
Tff7b72private Tff7b72val Te6edf3testContactKeys Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ff0Tffd700${Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff1!test1234Ta5d6ff"Tb4b4b4)
Tff7b72private Tff7b72fun Td2a8ffgenerateTestPacketsTb4b4b4(Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tff7b72= Te6edf3testContactKeysTb4b4b4.Te6edf3flatMap Tb4b4b4{ Te6edf3contactKey Tff7b72-Tff7b72>
Te6edf3ListTb4b4b4(Te6edf3SAMPLE_SIZETb4b4b4) Tb4b4b4{
Te6edf3PacketTb4b4b4(
Te6edf3uuid Tff7b72= T79c0ff0LTb4b4b4,
Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3port_num Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3contact_key Tff7b72= Te6edf3contactKeyTb4b4b4,
Te6edf3received_time Tff7b72= Te6edf3nowMillis Tff7b72+ Tffa657itTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3data Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Ta5d6ff"Ta5d6ffMessage Tffd700$Te6edf3itTa5d6ff!Ta5d6ff"Tb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72suspend Tff7b72fun Td2a8ffcreateDbTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3database Tff7b72= Te6edf3getInMemoryDatabaseBuilderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Te6edf3nodeInfoDao Tff7b72= Te6edf3databaseTb4b4b4.Te6edf3nodeInfoDaoTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{ Te6edf3setMyNodeInfoTb4b4b4(Te6edf3myNodeInfoTb4b4b4) Tb4b4b4}
Te6edf3packetDao Tff7b72=
Te6edf3databaseTb4b4b4.Te6edf3packetDaoTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3generateTestPacketsTb4b4b4(T79c0ff4T79c0ff2T79c0ff4T79c0ff2T79c0ff4T79c0ff2T79c0ff4T79c0ff3Tb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3insertTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}
Te6edf3generateTestPacketsTb4b4b4(Te6edf3myNodeNumTb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3insertTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@AfterTest
Tff7b72fun Td2a8ffcloseDbTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72::Te6edf3databaseTb4b4b4.Te6edf3isInitializedTb4b4b4) Te6edf3databaseTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetMessagesFromTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contactKey Tff7b72= Te6edf3testContactKeysTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3messages Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getMessagesFromTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3SAMPLE_SIZETb4b4b4, Te6edf3messagesTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3messagesTb4b4b4.Te6edf3all Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3myNodeNum Tff7b72=Tff7b72= Te6edf3myNodeNum Tb4b4b4}Tb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3messagesTb4b4b4.Te6edf3all Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3contact_key Tff7b72=Tff7b72= Te6edf3contactKey Tb4b4b4}Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetMessageCountTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contactKey Tff7b72= Te6edf3testContactKeysTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3SAMPLE_SIZETb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getMessageCountTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetUnreadCountTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contactKey Tff7b72= Te6edf3testContactKeysTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3SAMPLE_SIZETb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getUnreadCountTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestClearUnreadCountTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contactKey Tff7b72= Te6edf3testContactKeysTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3clearUnreadCountTb4b4b4(Te6edf3contactKeyTb4b4b4, Te6edf3nowMillis Tff7b72+ Te6edf3SAMPLE_SIZETb4b4b4)
Te6edf3assertEqualsTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getUnreadCountTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestClearAllUnreadCountsTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3clearAllUnreadCountsTb4b4b4(Tb4b4b4)
Te6edf3testContactKeysTb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3assertEqualsTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getUnreadCountTb4b4b4(Tffa657itTb4b4b4)Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestUpdateMessageStatusTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contactKey Tff7b72= Te6edf3testContactKeysTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3messages Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getMessagesFromTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3packet Tff7b72= Te6edf3messagesTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3packetTb4b4b4.Te6edf3data
Tff7b72val Te6edf3originalStatus Tff7b72= Te6edf3packetTb4b4b4.Te6edf3status
T8b949e// Ensure packet has a valid ID for updating
Tff7b72val Te6edf3packetWithId Tff7b72= Te6edf3packetTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3id Tff7b72= T79c0ff9T79c0ff9T79c0ff9Tb4b4b4, Te6edf3from Tff7b72= Ta5d6ff"Ta5d6ff!Tffd700$Te6edf3myNodeNumTa5d6ff"Tb4b4b4)
Tff7b72val Te6edf3updatedRoomPacket Tff7b72= Te6edf3messagesTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3packetTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3data Tff7b72= Te6edf3packetWithIdTb4b4b4, Te6edf3packetId Tff7b72= T79c0ff9T79c0ff9T79c0ff9Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatedRoomPacketTb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3updateMessageStatusTb4b4b4(Te6edf3packetWithIdTb4b4b4, Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4)
Tff7b72val Te6edf3updatedMessages Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getMessagesFromTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3updatedMessagesTb4b4b4.Te6edf3first Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3id Tff7b72=Tff7b72= T79c0ff9T79c0ff9T79c0ff9 Tb4b4b4}Tb4b4b4.Te6edf3packetTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3statusTb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72suspend Tff7b72fun Td2a8ffinsertSentPacketTb4b4b4(Te6edf3packetIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3statusTb4b4b4: Te6edf3MessageStatusTb4b4b4)Tb4b4b4: Tffa657Long Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3insertAndGetIdTb4b4b4(
Te6edf3PacketTb4b4b4(
Te6edf3uuid Tff7b72= T79c0ff0LTb4b4b4,
Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3port_num Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3contact_key Tff7b72= Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4,
Te6edf3received_time Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3read Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3packetId Tff7b72= Te6edf3packetIdTb4b4b4,
Te6edf3data Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Ta5d6ff"Ta5d6ffSentTa5d6ff"Tb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3id Tff7b72= Te6edf3packetIdTb4b4b4,
Te6edf3status Tff7b72= Te6edf3statusTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72private Tff7b72suspend Tff7b72fun Td2a8ffinsertSentReactionTb4b4b4(
Te6edf3packetIdTb4b4b4: Tffa657IntTb4b4b4,
Te6edf3statusTb4b4b4: Te6edf3MessageStatusTb4b4b4,
Te6edf3ownerNodeNumTb4b4b4: Tffa657Int Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3replyIdTb4b4b4: Tffa657Int Tff7b72= Te6edf3packetIdTb4b4b4,
Te6edf3emojiTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff👍Ta5d6ff"Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3packetDaoTb4b4b4.Te6edf3insertTb4b4b4(
Te6edf3ReactionEntityTb4b4b4(
Te6edf3myNodeNum Tff7b72= Te6edf3ownerNodeNumTb4b4b4,
Te6edf3replyId Tff7b72= Te6edf3replyIdTb4b4b4,
Te6edf3userId Tff7b72= Ta5d6ff"Ta5d6ff!localTa5d6ff"Tb4b4b4,
Te6edf3emoji Tff7b72= Te6edf3emojiTb4b4b4,
Te6edf3timestamp Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3packetId Tff7b72= Te6edf3packetIdTb4b4b4,
Te6edf3status Tff7b72= Te6edf3statusTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftimeOutEnroutePacketFailsOnlyStillEnroutePacketsTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3uuid Tff7b72= Te6edf3insertSentPacketTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff1Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3timeOutEnroutePacketTb4b4b4(Te6edf3myNodeNumTb4b4b4, Te6edf3uuidTb4b4b4, Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3timedOut Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getPacketByPacketIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff0T79c0ff1Tb4b4b4)
Te6edf3assertNotNullTb4b4b4(Te6edf3timedOutTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4, Te6edf3timedOutTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4, Te6edf3timedOutTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3routingErrorTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftimeOutEnroutePacketLeavesAnAlreadyResolvedPacketAloneTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
T8b949e// The ACK that resolved this packet landed while a send-ack timeout was pending; the timeout must not
T8b949e// overwrite the delivered status it sampled before the ACK arrived.
Tff7b72val Te6edf3uuid Tff7b72= Te6edf3insertSentPacketTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff2Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4)
Te6edf3assertFalseTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3timeOutEnroutePacketTb4b4b4(Te6edf3myNodeNumTb4b4b4, Te6edf3uuidTb4b4b4, Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3untouched Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getPacketByPacketIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff0T79c0ff2Tb4b4b4)
Te6edf3assertNotNullTb4b4b4(Te6edf3untouchedTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3untouchedTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3statusTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffapplyOutgoingQueueStatusLeavesAnAlreadyResolvedPacketAloneTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3insertSentPacketTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff9Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4)
Tff7b72val Te6edf3outgoing Tff7b72=
Te6edf3MeshPacketTb4b4b4(
Te6edf3from Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3NODENUM_BROADCASTTb4b4b4,
Te6edf3id Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff9Tb4b4b4,
Te6edf3decoded Tff7b72= Te6edf3DataTb4b4b4(Te6edf3portnum Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72val Te6edf3prior Tff7b72= Te6edf3assertNotNullTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3applyOutgoingQueueStatusTb4b4b4(Te6edf3outgoingTb4b4b4, Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3priorTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getPacketByPacketIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff0T79c0ff9Tb4b4b4)Tff7b72?.Te6edf3packetTff7b72?.Te6edf3dataTff7b72?.Te6edf3statusTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffapplyOutgoingReactionQueueStatusIgnoresAmbiguousMeshIdsTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff1T79c0ff1Tb4b4b4, Te6edf3replyId Tff7b72= T79c0ff1Tb4b4b4, Te6edf3emoji Tff7b72= Ta5d6ff"Ta5d6ff👍Ta5d6ff"Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff1T79c0ff1Tb4b4b4, Te6edf3replyId Tff7b72= T79c0ff2Tb4b4b4, Te6edf3emoji Tff7b72= Ta5d6ff"Ta5d6ff❤️Ta5d6ff"Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4)
Te6edf3assertNullTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3applyOutgoingReactionQueueStatusTb4b4b4(T79c0ff8T79c0ff0T79c0ff1T79c0ff1Tb4b4b4, Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3reactions Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3findReactionsWithIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff1T79c0ff1Tb4b4b4)Tb4b4b4.Te6edf3associateBy Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3replyId Tb4b4b4}
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4, Te6edf3reactionsTb4b4b4.Te6edf3getValueTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4, Te6edf3reactionsTb4b4b4.Te6edf3getValueTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4.Te6edf3statusTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffqueueStatusGuardRejectsStatusesOwnedByOtherTransitionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertFalseTb4b4b4(Te6edf3shouldApplyOutgoingQueueStatusTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4)Tb4b4b4)
Te6edf3assertFalseTb4b4b4(Te6edf3shouldApplyOutgoingQueueStatusTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3SFPP_CONFIRMEDTb4b4b4, Te6edf3MessageStatusTb4b4b4.Te6edf3SFPP_ROUTINGTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffgetReactionsByStatusReturnsOnlyOwnedRowsWithThatStatusTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff5Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff6Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff7Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4, Te6edf3ownerNodeNum Tff7b72= Te6edf3myNodeNum Tff7b72+ T79c0ff1Tb4b4b4)
Tff7b72val Te6edf3enroute Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getReactionsByStatusTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3listOfTb4b4b4(T79c0ff8T79c0ff0T79c0ff0T79c0ff5Tb4b4b4)Tb4b4b4, Te6edf3enrouteTb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3packetId Tb4b4b4}Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftimeOutEnrouteReactionFailsOnlyStillEnrouteReactionsTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff3Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3timeOutEnrouteReactionTb4b4b4(Te6edf3myNodeNumTb4b4b4, T79c0ff8T79c0ff0T79c0ff0T79c0ff3Tb4b4b4, Ta5d6ff"Ta5d6ff!localTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff👍Ta5d6ff"Tb4b4b4, Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3timedOut Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getReactionByPacketIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff0T79c0ff3Tb4b4b4)
Te6edf3assertNotNullTb4b4b4(Te6edf3timedOutTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4, Te6edf3timedOutTb4b4b4.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4, Te6edf3timedOutTb4b4b4.Te6edf3routingErrorTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftimeOutEnrouteReactionLeavesAnAlreadyResolvedReactionAloneTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff4Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4)
Te6edf3assertFalseTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3timeOutEnrouteReactionTb4b4b4(Te6edf3myNodeNumTb4b4b4, T79c0ff8T79c0ff0T79c0ff0T79c0ff4Tb4b4b4, Ta5d6ff"Ta5d6ff!localTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff👍Ta5d6ff"Tb4b4b4, Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3untouched Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getReactionByPacketIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff0T79c0ff4Tb4b4b4)
Te6edf3assertNotNullTb4b4b4(Te6edf3untouchedTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3untouchedTb4b4b4.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3untouchedTb4b4b4.Te6edf3routingErrorTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ffapplyOutgoingReactionQueueStatusLeavesAnAlreadyResolvedReactionAloneTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff1T79c0ff0Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4)
Tff7b72val Te6edf3prior Tff7b72= Te6edf3assertNotNullTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3applyOutgoingReactionQueueStatusTb4b4b4(T79c0ff8T79c0ff0T79c0ff1T79c0ff0Tb4b4b4, Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3priorTb4b4b4.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getReactionByPacketIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff1T79c0ff0Tb4b4b4)Tff7b72?.Te6edf3statusTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftimeOutEnrouteReactionTargetsOnlyOnePersistedRowWhenMeshIdsCollideTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff8Tb4b4b4, Te6edf3replyId Tff7b72= T79c0ff1Tb4b4b4, Te6edf3emoji Tff7b72= Ta5d6ff"Ta5d6ff👍Ta5d6ff"Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Te6edf3insertSentReactionTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff8Tb4b4b4, Te6edf3replyId Tff7b72= T79c0ff2Tb4b4b4, Te6edf3emoji Tff7b72= Ta5d6ff"Ta5d6ff❤️Ta5d6ff"Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3timeOutEnrouteReactionTb4b4b4(Te6edf3myNodeNumTb4b4b4, T79c0ff1Tb4b4b4, Ta5d6ff"Ta5d6ff!localTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff👍Ta5d6ff"Tb4b4b4, Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3reactions Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3findReactionsWithIdTb4b4b4(T79c0ff8T79c0ff0T79c0ff0T79c0ff8Tb4b4b4)Tb4b4b4.Te6edf3associateBy Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3replyId Tb4b4b4}
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4, Te6edf3reactionsTb4b4b4.Te6edf3getValueTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4, Te6edf3reactionsTb4b4b4.Te6edf3getValueTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4.Te6edf3statusTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftimeOutEnroutePacketTargetsOnlyOnePersistedRowWhenMeshIdsCollideTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3firstUuid Tff7b72= Te6edf3insertSentPacketTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff3Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Tff7b72val Te6edf3secondUuid Tff7b72= Te6edf3insertSentPacketTb4b4b4(Te6edf3packetId Tff7b72= T79c0ff8T79c0ff0T79c0ff0T79c0ff3Tb4b4b4, Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3packetDaoTb4b4b4.Te6edf3timeOutEnroutePacketTb4b4b4(Te6edf3myNodeNumTb4b4b4, Te6edf3firstUuidTb4b4b4, Te6edf3TIMEOUT_ROUTING_ERRORTb4b4b4)Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getPacketByPersistedIdTb4b4b4(Te6edf3myNodeNumTb4b4b4, Te6edf3firstUuidTb4b4b4)Tff7b72?.Te6edf3dataTff7b72?.Te6edf3statusTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getPacketByPersistedIdTb4b4b4(Te6edf3myNodeNumTb4b4b4, Te6edf3secondUuidTb4b4b4)Tff7b72?.Te6edf3dataTff7b72?.Te6edf3statusTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetQueuedPacketsTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3queuedPacket Tff7b72=
Te6edf3PacketTb4b4b4(
Te6edf3uuid Tff7b72= T79c0ff0LTb4b4b4,
Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3port_num Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3contact_key Tff7b72= Ta5d6ff"Ta5d6ffqueuedTa5d6ff"Tb4b4b4,
Te6edf3received_time Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3read Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3data Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Ta5d6ff"Ta5d6ffQueuedTa5d6ff"Tb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3insertTb4b4b4(Te6edf3queuedPacketTb4b4b4)
Tff7b72val Te6edf3queued Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getAllDataPacketsTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUED Tb4b4b4}
Te6edf3assertNotNullTb4b4b4(Te6edf3queuedTb4b4b4)
Te6edf3assertEqualsTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3queuedTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Ta5d6ff"Ta5d6ffQueuedTa5d6ff"Tb4b4b4, Te6edf3queuedTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3textTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestDeleteMessagesTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contactKey Tff7b72= Te6edf3testContactKeysTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3deleteContactsTb4b4b4(Te6edf3listOfTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3packetDaoTb4b4b4.Te6edf3getMessageCountTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetContactKeysTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contacts Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getContactKeysTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3testContactKeysTb4b4b4.Te6edf3sizeTb4b4b4, Te6edf3contactsTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3testContactKeysTb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3assertTrueTb4b4b4(Te6edf3contactsTb4b4b4.Te6edf3containsKeyTb4b4b4(Tffa657itTb4b4b4)Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetWaypointsTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3waypointPacket Tff7b72=
Te6edf3PacketTb4b4b4(
Te6edf3uuid Tff7b72= T79c0ff0LTb4b4b4,
Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3port_num Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3WAYPOINT_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3contact_key Tff7b72= Ta5d6ff"Ta5d6ff0Tffd700${Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3received_time Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3read Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3data Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Ta5d6ff"Ta5d6ffWaypointTa5d6ff"Tb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3WAYPOINT_APPTb4b4b4.Te6edf3valueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3insertTb4b4b4(Te6edf3waypointPacketTb4b4b4)
Tff7b72val Te6edf3waypoints Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getAllWaypointsTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3waypointsTb4b4b4.Te6edf3sizeTb4b4b4)
T8b949e// Waypoints aren't text messages, so they don't resolve a string text.
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestUpsertReactionTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3reaction Tff7b72=
Te6edf3ReactionEntityTb4b4b4(Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4, Te6edf3replyId Tff7b72= T79c0ff1T79c0ff2T79c0ff3Tb4b4b4, Te6edf3userId Tff7b72= Ta5d6ff"Ta5d6ff!testTa5d6ff"Tb4b4b4, Te6edf3emoji Tff7b72= Ta5d6ff"Ta5d6ff👍Ta5d6ff"Tb4b4b4, Te6edf3timestamp Tff7b72= Te6edf3nowMillisTb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3insertTb4b4b4(Te6edf3reactionTb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetMessagesFromWithIncludeFilteredTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contactKey Tff7b72= Ta5d6ff"Ta5d6fffilter-testTa5d6ff"
Tff7b72val Te6edf3normalMessages Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffMsg 1Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffMsg 2Ta5d6ff"Tb4b4b4)
Tff7b72val Te6edf3filteredMessages Tff7b72= Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffFiltered 1Ta5d6ff"Tb4b4b4)
Te6edf3normalMessagesTb4b4b4.Te6edf3forEachIndexed Tb4b4b4{ Te6edf3indexTb4b4b4, Te6edf3text Tff7b72-Tff7b72>
Tff7b72val Te6edf3packet Tff7b72=
Te6edf3PacketTb4b4b4(
Te6edf3uuid Tff7b72= T79c0ff0LTb4b4b4,
Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3port_num Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3contact_key Tff7b72= Te6edf3contactKeyTb4b4b4,
Te6edf3received_time Tff7b72= Te6edf3nowMillis Tff7b72+ Te6edf3indexTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3data Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Te6edf3textTb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3filtered Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3insertTb4b4b4(Te6edf3packetTb4b4b4)
Tb4b4b4}
Te6edf3filteredMessagesTb4b4b4.Te6edf3forEachIndexed Tb4b4b4{ Te6edf3indexTb4b4b4, Te6edf3text Tff7b72-Tff7b72>
Tff7b72val Te6edf3packet Tff7b72=
Te6edf3PacketTb4b4b4(
Te6edf3uuid Tff7b72= T79c0ff0LTb4b4b4,
Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3port_num Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3contact_key Tff7b72= Te6edf3contactKeyTb4b4b4,
Te6edf3received_time Tff7b72= Te6edf3nowMillis Tff7b72+ Te6edf3normalMessagesTb4b4b4.Te6edf3size Tff7b72+ Te6edf3indexTb4b4b4,
Te6edf3read Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3data Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Te6edf3textTb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3filtered Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)
Te6edf3packetDaoTb4b4b4.Te6edf3insertTb4b4b4(Te6edf3packetTb4b4b4)
Tb4b4b4}
Tff7b72val Te6edf3allMessages Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getMessagesFromTb4b4b4(Te6edf3contactKeyTb4b4b4)Tb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3normalMessagesTb4b4b4.Te6edf3size Tff7b72+ Te6edf3filteredMessagesTb4b4b4.Te6edf3sizeTb4b4b4, Te6edf3allMessagesTb4b4b4.Te6edf3sizeTb4b4b4)
Tff7b72val Te6edf3includingFiltered Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getMessagesFromTb4b4b4(Te6edf3contactKeyTb4b4b4, Te6edf3includeFiltered Tff7b72= Tff7b72trueTb4b4b4)Tb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3normalMessagesTb4b4b4.Te6edf3size Tff7b72+ Te6edf3filteredMessagesTb4b4b4.Te6edf3sizeTb4b4b4, Te6edf3includingFilteredTb4b4b4.Te6edf3sizeTb4b4b4)
Tff7b72val Te6edf3excludingFiltered Tff7b72= Te6edf3packetDaoTb4b4b4.Te6edf3getMessagesFromTb4b4b4(Te6edf3contactKeyTb4b4b4, Te6edf3includeFiltered Tff7b72= Tff7b72falseTb4b4b4)Tb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3normalMessagesTb4b4b4.Te6edf3sizeTb4b4b4, Te6edf3excludingFilteredTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertFalseTb4b4b4(Te6edf3excludingFilteredTb4b4b4.Te6edf3any Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3filtered Tb4b4b4}Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8fftestGetPacketsByPacketIdsChunkedTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3createDbTb4b4b4(Tb4b4b4)
T8b949e// Regression test for SQLITE_MAX_VARIABLE_NUMBER (999) limit. Inserting >999 packets and
T8b949e// looking them up by id must not throw; callers are expected to chunk, and each chunk
T8b949e// must return the correct rows.
Tff7b72val Te6edf3totalPackets Tff7b72= T79c0ff2T79c0ff0T79c0ff0T79c0ff0
Tff7b72val Te6edf3chunkSize Tff7b72= Te6edf3NodeInfoDaoTb4b4b4.Te6edf3MAX_BIND_PARAMS
Tff7b72val Te6edf3contactKey Tff7b72= Ta5d6ff"Ta5d6ffchunk-testTa5d6ff"
Tff7b72val Te6edf3baseTime Tff7b72= Te6edf3nowMillis
Tff7b72val Te6edf3packetIds Tff7b72= Tb4b4b4(T79c0ff1.Tb4b4b4.Te6edf3totalPacketsTb4b4b4)Tb4b4b4.Te6edf3toListTb4b4b4(Tb4b4b4)
Te6edf3packetIdsTb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3id Tff7b72-Tff7b72>
Te6edf3packetDaoTb4b4b4.Te6edf3insertTb4b4b4(
Te6edf3PacketTb4b4b4(
Te6edf3uuid Tff7b72= T79c0ff0LTb4b4b4,
Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNumTb4b4b4,
Te6edf3port_num Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3contact_key Tff7b72= Te6edf3contactKeyTb4b4b4,
Te6edf3received_time Tff7b72= Te6edf3baseTime Tff7b72+ Te6edf3idTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3data Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Ta5d6ff"Ta5d6ffChunk Tffd700$Te6edf3idTa5d6ff"Tb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3packetId Tff7b72= Te6edf3idTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72val Te6edf3fetched Tff7b72= Te6edf3packetIdsTb4b4b4.Te6edf3chunkedTb4b4b4(Te6edf3chunkSizeTb4b4b4)Tb4b4b4.Te6edf3flatMap Tb4b4b4{ Te6edf3packetDaoTb4b4b4.Te6edf3getPacketsByPacketIdsTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}
Te6edf3assertEqualsTb4b4b4(Te6edf3totalPacketsTb4b4b4, Te6edf3fetchedTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3packetIdsTb4b4b4.Te6edf3toSetTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3fetchedTb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3packetTb4b4b4.Te6edf3packetId Tb4b4b4}Tb4b4b4.Te6edf3toSetTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Tff7b72companion Tff7b72object Tb4b4b4{
Tff7b72private Tff7b72const Tff7b72val Te6edf3SAMPLE_SIZE Tff7b72= T79c0ff1T79c0ff0
Tff7b72private Tff7b72val Te6edf3TIMEOUT_ROUTING_ERROR Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3TIMEOUTTb4b4b4.Te6edf3value
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.14s